1. Field of the Invention
The present invention relates, in general, to computer operating and/or processing environments, and, more particularly, to systems and methods for configuring users' computing environments to control resources that are made available to each user of a client node or networked computer such as applications and other tools, memory, networked devices, and the like.
2. Relevant Background
In a typical workplace, employees begin their day by powering on their computer workstation. The computer's operating system boots up and requests each employee or computer user to enter log in information. The operating system then acts to configure the computer workstation to provide the user a computing or processing environment. The computer workstation may be considered a client or node as nearly all computer workstations are now communicatively linked via a network (e.g., are based on client-server topologies) to a variety of computing resources such as servers that act to serve tools such as applications including word processing packages, Internet navigation tools, graphics packages, and the like.
An ongoing challenge for information technology (IT) professionals and network administrators is how best to manage users' computing environment to best meet the needs of the user as well as the employer or other entity providing the user access to the networked resources. In many cases, a network administrator has to set up for each user what shared applications the user will have access to, defining desktop layout and security settings, and other client device configurations. Some computing settings are suited for simply defining a computing environment initially for each user and then periodically to reflect changes in network resources such as with the use of logon scripts or the like. However, there are many situations in which it is desirable to be able to more dynamically manage users' computing environments to more tightly control the resources made available to particular users (such as which applications are accessible and even which versions of such applications are available to the users) and to allow users to operate one or more computer workstations or network clients in multiple computing environments (such as to allow users to work on differing projects or to access digital assets according to their current role).
Multiple computing environments may be desirable when managing and accessing digital assets such as those created for animation, computer games, and Web site development. For example, in producing animation such as a film, the animation pipeline relies on a comprehensive database that stores files holding various versions of shots that are combined into sequences, which are in turn combined to form the show or film. Each shot may have multiple versions, and it is important for an artist or animator to be able to quickly access a particular version such as the most current version of a shot rather than an out of date version. Managing or organizing such a large number of digital assets can be a logistics nightmare, and animators and others trying to access and use the assets are often frustrated. Often, animators and other contributors will be assigned to multiple projects such as a number of digital film productions simultaneously. Each of these projects may use differing tools such as differing graphics programs or differing versions of the same programs. Hence, it is important that these users or contributors work in a particular computing environment each time they access a particular set of digital assets, e.g., file compatibility and other issues may arise if an animator creates a shot with a particular version of a graphics tool and then later modifies the shot with a differing version of the graphics tool or with another graphics tool.
Historically, network administrators have tried to address the problems associated with managing users' computing environments by inputting environment definition information to each user's shell. A shell may generally be thought of as a computer program or routine in Linux, Unix, C, or other programming languages that provides an interface between a user and a computer system, and, more typically, a shell is considered a software interface between the user and operating system in which the shell interprets commands and communicates them to the operating system of the computer. In the past, network administrators have used routines (e.g., a Perl, a Python, or other programming language routine) that are run and/or called external to the shell to define the computing environment information or settings and then to produce a shell script or a file that it passed to the shell to cause the shell to execute a number of commands or actions to define a user's computing environment based on these passed environmental settings. For example, a simple list of environments may be stored in memory, and a program external to the shell is called to read from the environment list to select an appropriate one for a particular user during establishment of a computing environment. The external program would then write a separate script for the chosen environment and pass this script to the shell for execution (e.g., a file containing a Perl, Python, or other language program is sent to the shell). In some cases, launching subprocesses to define the computing environment has hindered performance and/or caused an undesired delay in creating the environment and has resulted in increased memory usage. Also, existing techniques of managing computing environment have not provided a desired level of control for administrators in managing available environments (e.g., issues with managing the environment list).
Hence, there remains a need for improved methods and systems of managing user computer environments such as for users accessing computer resources via a digital communications network such as a local area network (LAN), a wide area network (WAN), or the like. Preferably, such methods and systems would be adapted to support the digital film industry and similar industries in which each user may need to work in two or more computing environments such as to support two or more work projects that utilize differing tool sets or computer resources.